/* 
    函数类型-参数和返回值
    内容：函数的类型实际上指的是：函数参数和返回值的类型
*/


//1.单独指定参数、返回值的类型：
//（1）普通类型
function fun(a:number,b:number):number {
    return a + b;
}
fun(1,2)
//（2）箭头函数
const fun2 = (a:string,b:string):string=> {
    return a + b;
}

//返回值为void（空），箭头函数可以return出去，或者里面为空
const fun3 = (x:string,y:number)=>{
    return '1' + 2
    // console.log(x,y);
    
}
fun3("1",2)
//2.同时指定参数、返回值的类型:
  //注意：这种形式只适用于函数表达式(箭头函数)
  //像类型别名一样，先定义好函数的类型，然后调用
type Arrtype = (number | string)[]; //类型别名

type Funtype=(a:number,b:number)=>number; //类型别名 - 函数格式
const add:Funtype=(x,y)=>{
    console.log(x+y);
    return x+y;
}
add(10,20)

//或者
const reduce=(x:number,y:string):Arrtype=>{
    return [x,y]
    // return x+y
}


//可选值
const fun4=(x:number,y?:number)=>{
 console.log(x,y);
}
fun4(11,22)
fun4(11)

type FunKexan = (x:number,y:number)=>number
const kuxuan:FunKexan=(x,y)=>{
    return x + y
}
kuxuan(10,20)
export {}